#include "login.h"
#include "ui_login.h"
#include "tools.h"
#include <QMessageBox>



//登录界面
Login::Login(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);
    socket = new QTcpSocket(this);
    socket->connectToHost("127.0.0.1",8090); //TCP连接，本机，8090端口
    if(socket->waitForConnected(3000)){//等待3s，连不上会返回fasle
        qDebug()<<"连接成功！";
    }else{
        qDebug()<<"连接失败！";
        qDebug()<<socket->errorString();
        return;
    }
}

Login::~Login()
{
    delete ui;
    socket->close(); //关闭TCP连接
}


//单击登录
//从界面上获取用户名密码，进行格式判断，格式正确发给服务端；不正确提示格式有误
//发给服务端，服务端进行判断，服务端返回结果，给用户显示登录成功或失败
//登录成功，则关闭登录页面，打开用户主界面
//登录失败，则对话框提示“用户名或密码错误”
void Login::on_pushButton_log_clicked()
{
    //qDebug()<<"登录";
    //待写
    QString username = ui->lineEdit_username->text();
    QString password = ui->lineEdit_password->text();
    qDebug()<<username<< "  "<<password;
    //qDebug()<<usernameIsTrue(username)<<"  "<<passwordIsTrue(password);
    if(!usernameIsTrue(username)||!passwordIsTrue(password)){
        QMessageBox::warning(this, "登录失败", "用户名或密码格式错误！");
        return;
    }

    User user;
    user.setUsername(username);
    user.setPassword(password);
    //发送数据
    //发送请求头
    sendDatabase(socket,Database,Select,table_user);
    //发送数据
    sendUserData(socket,user);

    //等待0.3秒
    waitForTimeout(1000);
    QByteArray data;
    if (socket->bytesAvailable() > 0) {
        // 有数据可以读取
        data = socket->readAll();
        qDebug()<<"登录页面--读取到数据: "<<data;
    }else{
        qDebug()<<"登录页面--没有数据";
    }

    QDataStream in(data);
    in.setByteOrder(QDataStream::LittleEndian);

    int id;   //id
    QString username1; //用户名
    QString password1; //密码
    QString gender; //性别
    int age; //年龄
    QString phone; //电话号码
    QString state; //状态
    QString note; //个人说明

    in>>id>>username1>>password1>>gender>>age>>phone>>state>>note;

    if(username1==""){
        QMessageBox::warning(this, "登录失败", "账户不存在！");
        return ;
    }

    if(username==username1&&password==password1){
        QMessageBox::warning(this, "登录成功", "登录成功！");
        qDebug()<<"登录成功";
        //若登录成功
        //关闭登录页面
        this->close();
        //打开用户界面
        User user1(id,username1,password1,gender,age,phone,state,note);
        qDebug()<<"登录界面："<<user1.toQString();
        // 创建一个动态分配的 MainUser 对象
        MainUser *muser = new MainUser(user1); // 使用 new 动态分配
        muser->show();
    }
    else {
        qDebug()<<"登录失败";
        QMessageBox::warning(this, "登录失败", "用户名或密码错误");
    }

}



//单击注册账号，打开注册页面
void Login::on_pushButton_register_clicked()
{
    qDebug()<<"注册页面";
    //打开注册页面
    Register *reg = new Register(socket);
    reg->show();
}



